Docker 搭建私有仓库
创建一个本地目录来存储容器镜像:
mkdir ~/registry
使用 Docker 运行镜像仓库容器:
docker run -d -p 5000:5000 --name registry -v ~/registry:/var/lib/registry registry:2.8.1
说明:在使用 registry2.3.1 的话会有一个严重的问题,问题就是在 yaml 或者在命令行通过 ctr 和 crictl 命令拉取镜像时携带的 sha256 值和私有仓库中镜像存储的实际 sha256 不一致,因此会报找不到镜像的问题:not found: not found
的错误,所以尽量使用 2.7.1 版本以上的镜像,并且 2.7.1 版本以上的仓库支持加密镜像的存储。
使用 docker run 命令启动了一个名为 registry 的容器,并将容器的 5000 端口映射到本地的 5000 端口上。-v 参数指定了将本地的 ~/registry
目录挂载到容器内的 /var/lib/registry
目录中,这样容器就可以将镜像保存到本地目录中。
在列表中应该能看到 registry 容器的状态为 Up。
使用本地镜像仓库
构建容器镜像时,将镜像名称指定为本地镜像仓库的地址,例如:
docker build -t localhost:5000/jokes:latest .
在上述示例中,localhost:5000
是本地 Docker 镜像仓库的地址,jokes 是镜像的名称,latest 是镜像的标签,最后的 .
表示 Dockerfile 所在目录。
上传镜像到本地 Docker 镜像仓库,例如:
docker push localhost:5000/jokes:latest
使用以下命令查看本地 Docker 镜像仓库中的镜像:
curl -s http://localhost:5000/v2/_catalog | jq .
执行上述命令后,将会得到一个 JSON 格式的输出,其中 repositories 键对应的值即为私有仓库中包含的镜像列表。如果私有仓库为空,则该值将为空数组。可以进一步执行如下命令,查看某个镜像的标签列表:
curl -s http://localhost:5000/v2/<IMAGE_NAME>/tags/list | jq .
其中,<IMAGE_NAME>
需要替换为你需要查询标签的镜像名称。执行上述命令后,将会得到一个 JSON 格式的输出,其中 tags 键对应的值即为该镜像对应的标签列表。
Web 页面查看仓库
如果使用的是官方的 Docker Registry 镜像,可以使用另一个开源工具 —— Docker Registry UI 来配置 web 面板。
Docker Registry UI 是一个基于 Node.js 和 Angular.js 开发的 Docker 镜像管理工具,提供了一个简洁、易用的 web 面板,可以用来查看和管理 Docker 镜像。Docker Registry UI 与 Docker Registry 无缝集成,可以轻松地管理 Docker Registry 中的镜像。
要使用 Docker Registry UI,可以按照以下步骤进行配置:
安装 Docker Registry UI:可以使用 npm 包管理器来安装 Docker Registry UI,执行以下命令:安装 Docker Registry UI:可以使用 npm 包管理器来安装 Docker Registry UI,执行以下命令:
npm install -g docker-registry-ui